WHERE 子句
发表于 2018-3-5 16:38:25 | 分类于 SQL |
WHERE 字句用于提取满足指定标准的记录。
语法
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
示例
样本数据库与 SELECT 字句 一章相同。
WHERE 字句示例
从 "Websites" 表中选取国家为 "CN" 的所有网站:
SELECT * FROM Websites WHERE country='CN';
输出结果:
mysql> SELECT * FROM Websites WHERE country='CN';
+----+--------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
+----+--------------+---------------------------+-------+---------+
文本字段 vs. 数值字段
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
在上个示例中 'CN' 文本字段使用了单引号。
如果是数值字段,请不要使用引号。
例子:
SELECT * FROM Websites WHERE id=1;
输出结果:
mysql> SELECT * FROM Websites WHERE id=1;
+----+--------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
+----+--------------+---------------------------+-------+---------+
WHERE 字句中的运算符
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
更多示例
Where 子句
示例 (1):
搜索 empno 等于 7900 的数据:
Select * from emp where empno=7900;
示例 (2):Where +条件(筛选行)
条件:列,比较运算符,值
比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)
Select * from emp where ename='SMITH';
例子中的 SMITH 用单引号引起来,表示是字符串,字符串要区分大小写。
逻辑运算
示例
查询 EMP 表中 SAL 列中大于 2000 小于 3000 的值。
Select * from emp where sal > 2000 and sal < 3000;
示例(2):Or(或),满足其中一个条件的值
查询 emp 表中 SAL 大于 2000 或 COMM 大于500的值。
Select * from emp where sal > 2000 or comm > 500;
示例(3):Not(非),满足不包含该条件的值。
查询EMP表中 sal 小于等于 1500 的值。
select * from emp where not sal > 1500;
逻辑运算的优先级:
not > and > or
###特殊条件
空值判断: is null
查询 emp 表中 comm 列中的空值。
Select * from emp where comm is null;
between and (在 之间的值)
查询 emp 表中 SAL 列中大于 1500 的小于 3000 的值。
Select * from emp where sal between 1500 and 3000;
注意:大于等于 1500 且小于等于 3000, 1500 为下限,3000 为上限,下限在前,上限在后,查询的范围包涵有上下限的值。
In
查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。
Select * from emp where sal in (5000,3000,1500);
like 模糊查询
查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。
Select * from emp where ename like 'M%';
字符串 | 描述 |
---|---|
% | 表示多个字值,_ 下划线表示一个字符 |
M% | 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的 |
%M% | 表示查询包含M的所有内容 |
%M_ | 表示查询以M在倒数第二位的所有内容 |
不带比较运算符的 WHERE 子句
WHERE子句并不一定带比较运算符,当不带运算符时,会执行一个隐式转换。
当 0 时转化为 false,当其他值是转化为 true。
例如:
SELECT studentNO FROM student WHERE 0
则会返回一个空集,因为每一行记录 WHERE 都返回 false。 SELECT studentNO FROM student WHERE 1
或者
SELECT studentNO FROM student WHERE 'abc'
都将返回 student 表所有行记录的 studentNO 列。因为每一行记录 WHERE 都返回 true。